package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

type Login struct {
	// bingding:"required" 表示必传,不然报错
	User    string `form:"username" json:"user" uri:"user" xml:"user" bingding:"required"`
	Pasword string `form:"password" json:"password" uri:"password" xml:"password" bingding:"required"`
}

func main() {
	r := gin.Default()
	// json绑定
	r.POST("loginJSON", func(context *gin.Context) {
		// 声明接收变量
		var testJson Login
		// 把请求的body中的数据,自动按json格式绑定
		err := context.ShouldBindJSON(&testJson)
		if err != nil {
			// 返回错误信息
			// gin.H 封装了生成json数据的工具
			context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}
		// 用户名密码是否正确
		if testJson.User != "root" || testJson.Pasword != "123456" {
			context.JSON(http.StatusBadRequest, gin.H{"status": 304})
			return
		}
		context.JSON(http.StatusOK, gin.H{"status": 200})
	})

	r.Run(":8000")

	// 访问测试:
	// curl http://127.0.0.1:8000/loginJSON -H 'content-type:application/json' -d "{\"user\":\"root\",\"password\":\"123456\"}" -X POST
	// curl http://127.0.0.1:8000/loginJSON -H 'content-type:application/json' -d "{\"user\":\"root\",\"password\":\"111111\"}" -X POST
}
